package main

import "fmt"

func main() {
	// 1、基于数组定义切片
	// a := [5]int{1, 2, 3, 4, 5}
	// b := a[:] // 获取数组里面的所有值
	// fmt.Printf("值：%v--%T\n", b, b)
	// c := a[2:4] // 获取数组里面的第三个到第四个值
	// fmt.Printf("值：%v--%T\n", c, c)
	// d := a[1:4:5] // 获取数组里面的第二个到第四个值，步长为5
	// fmt.Printf("值：%v--%T\n", d, d)

	// 2、基于切片定义切片
	// a := []string{"北京", "上海", "广州", "深圳", "成都", "西安"}
	// b := a[1:] // 获取切片里面的所有值
	// fmt.Printf("值：%v--%T\n", b, b)
	// c := a[2:4] // 获取切片里面的第三个到第四个值
	// fmt.Printf("值：%v--%T\n", c, c)
	// d := a[1:4:5] // 获取切片里面的第二个到第四个值，步长为5
	// fmt.Printf("值：%v--%T\n", d, d)

	// 3、切片的长度和容量
	// 容量：切片的容量是从它的第一个元素开始，到它的底层数组的最后一个元素结束的元素个数。
	// 长度：切片的长度是指切片包含的元素个数。
	a := []int{1, 2, 3, 4, 5, 6}
	fmt.Printf("长度：%d--容量：%d\n", len(a), cap(a))
	b := a[2:]
	fmt.Printf("长度：%d--容量：%d\n", len(b), cap(b))
	c := a[1:3]
	fmt.Printf("长度：%d--容量：%d\n", len(c), cap(c))
	d := a[:3]
	fmt.Printf("长度：%d--容量：%d\n", len(d), cap(d))
}
